home *** CD-ROM | disk | FTP | other *** search
/ Stone Design / Stone Design.iso / Stone_Friends / Wave / WavesWorld / Source / Shaders / TexturingAndModeling:AProceduralApproach / DPShaders / DPStar.sl < prev    next >
Encoding:
Text File  |  1995-03-22  |  1014 b   |  39 lines

  1. #include "proctext.h"
  2.  
  3. surface
  4. DPStar(
  5.     uniform float Ka = 1;
  6.     uniform float Kd = 1;
  7.     uniform color starcolor = color (1.0000,0.5161,0.0000);
  8.     uniform float npoints = 5;
  9.     uniform float sctr = 0.5;
  10.     uniform float tctr = 0.5;
  11.      )
  12. {
  13.     point Nf = normalize(faceforward(N, I));
  14.     color Ct;
  15.     float ss, tt, angle, r, a, in_out;
  16.     uniform float rmin = 0.07, rmax = 0.2;
  17.     uniform float starangle = 2*PI/npoints;
  18.     uniform point p0 = rmax*(cos(0),sin(0),0);
  19.     uniform point p1 = rmin*
  20.         (cos(starangle/2),sin(starangle/2),0);
  21.     uniform point d0 = p1 - p0;
  22.     point d1;
  23.     
  24.     ss = s - sctr; tt = t - tctr;
  25.     angle = atan(ss, tt) + PI;
  26.     r = sqrt(ss*ss + tt*tt);
  27.     a = mod(angle, starangle)/starangle;
  28.     
  29.     if (a >= 0.5)
  30.         a = 1 - a;
  31.     d1 = r*(cos(a), sin(a),0) - p0;
  32.     in_out = step(0, zcomp(d0^d1));
  33.     Ct = mix(Cs, starcolor, in_out);
  34.     
  35.     /* diffuse ("matte") shading model */
  36.     Oi = Os;
  37.     Ci = Os * Ct * (Ka * ambient() + Kd * diffuse(Nf));
  38. }
  39.